package com.greenyoung.pwiki.oss.cloud;


import com.greenyoung.pwiki.oss.utils.SpringContextUtils;
import com.greenyoung.pwiki.oss.service.ConfigService;


/**
 * 文件上传工厂类，通过CloudStorageConfig获取配置信息，根据配置信息中的类型返回对应的存储服务
 *
 */
public final class OSSFactory {
    private final static String CLOUD_STORAGE_CONFIG_KEY = "CLOUD_STORAGE_CONFIG_KEY";
    private static ConfigService configService;

    static {
        OSSFactory.configService = (ConfigService) SpringContextUtils.getBean("configService");
    }

    public static AbsCloudStorageService build(){
        //通过服务从数据库中取出云存储配置信息，配置中有唯一的type指定要使用的云服务类型
        CloudStorageConfig config = configService.getConfigObject(CLOUD_STORAGE_CONFIG_KEY, CloudStorageConfig.class);

        switch (config.getType()){
            case 1:
                return new QiniuCloudStorageService(config);
            case 2:
                return new AliyunCloudStorageService(config);
            case 3:
                return new QcloudCloudStorageService(config);
            default:
                break;
        }
        return null;
    }

}
